package pattern;


/**
 * 单例模式 -- 饿汉模式
 */
class Hungry {
    //私有属性
    private static Hungry instance = new Hungry();

    private Hungry() {
        //私有构造方法
    }

    /**
     * 外界获取该对象 -- 对象唯一
     * @return
     */
    public static Hungry getInstance() {
        return instance;
    }

}

/**
 * 单例模式 -- 懒汉模式（需要保证线程安全）
 */
class Idleness {

    private static volatile Idleness instance = null;

    private static Object locker = new Object();

    private Idleness() {

    }

    public static Idleness getInstance() {
        if(instance == null) {
            synchronized(locker) {
                if(instance == null) {
                    instance = new Idleness();
                }
            }
        }
        return instance;
    }

}


public class Singleton {
    public static void main(String[] args) {

    }
}
